function debug(str){//调试函数，比alert好用多了。
	$('debug').appendChild($C("span",{},' '+str));
}
function $(id){
	return document.getElementById(id);
}
Function.prototype.bind=function(obj){//改变this
	var t=this;
	return function(){
		return t.apply(obj,arguments);
	}
}
var browser=(function(){//浏览器判断
	var b=navigator.userAgent.toLowerCase();
	return {
	safari:/webkit/.test(b),
	opera:/opera/.test(b),
	ie:/msie/.test(b) && !/opera/.test(b),
	mozilla:/mozilla/.test(b) && !/(compatible|webkit)/.test(b)
};})();
var eve=new Object();//事件绑定
eve.observe=function(element,name,observer){
	if(browser.ie)
		element.attachEvent("on"+name,observer);
	else
		element.addEventListener(name,observer,false);
}
eve.stopObserve=function(element,name,observer){
	if(browser.ie)
		element.detachEvent("on"+name,observer);
	else
		element.removeEventListener(name,observer,false);
}
function $C(eName,propertys){//DOM对象创建函数。
	var childObj,argLen=arguments.length;
	var domAttr;
	var tmpObj=document.createElement(eName);
	var fix={'class':'className','colspan':'colSpan','rowspan':'rowSpan'};
	for(var pro in propertys){
		domAttr=fix[pro]||pro;
		tmpObj[domAttr]=propertys[pro];
	}
	if(argLen==2)return tmpObj;
	for(var i=2;i<argLen;i++){
		childObj=arguments[i];
		if('string'==typeof(arguments[i]))
		tmpObj.innerHTML+=arguments[i];
		else{
			try{
				tmpObj.appendChild(childObj);
			}catch(e){
				if('number'==typeof(arguments[i]))
					tmpObj.innerHTML=arguments[i]+'';
				else
					alert('创建'+eName+'参数中参数:'+arguments[i]+'有问题');
			}
		}
	}
	return tmpObj;
}

function getPosition(e){//取得对象的绝对位置
	var t=e.offsetTop;
	var l=e.offsetLeft;
	while(e=e.offsetParent){
		t+=e.offsetTop;
		l+=e.offsetLeft;
	}
	return [t,l];
}
function addClass(elem,cName){//增加一个className
	if(elem.className.indexOf(cName)>=0)	return;//如果已经有了这个classname,return
	var s=(elem.className=='')?'':' ';
	elem.className+=s+cName;
}
function removeClass(elem,cName){//去掉一个className
	var t=elem.className.indexOf(cName);
	if(cName==elem.className)	return elem.className='';
	var s='';
	if(-1==t)	return;
	if(0==t)
		s=cName+' ';
	else
		s=' '+cName;
	elem.className=elem.className.replace(s,'');
}